1. Field of the Invention
This invention generally relates to software project management, and more particularly to techniques performed in a computer system for managing configuration data for platforms being tested.
2. Description of Related Art
Generally, software testing is part of the software development process. Software testing may be performed, for example, to test a code modification that adds a new feature or corrects a reported problem. Software systems may rely on software components that are external to the software system, such as a software component provided as part of an operating system as well as various third-party provided software components. Various versions of the same software component may be tested as code is incrementally modified. Additionally, software testing may include execution of a software system on a variety of different hardware configurations and system configurations to ensure proper performance. Together, the hardware configurations, and software components and settings describing an environment in which a particular software system is tested may be referred to as a “platform”. As an integral part of software testing, it is important to ensure that software systems are tested on a variety of different platforms, for example, with different hardware and software combinations.
One problem in software testing is keeping track of the different hardware and software combinations that are included in a particular platform describing the environment in which a version of a software system is tested. Additionally, when a software fault occurs, for example on a customer system, the difference between the customer's platform and a tested platform may be crucial for reproducing the fault as experienced on the customer system. Obtaining details of the platform configuration of the customer system as well as the various systems tested by developers may be manually tedious and error prone. Additionally, each time there is even a slight change in the platform used in testing, a new inventory of the hardware and software options and settings must be taken and recorded as this constitutes an additional platform.
The problem of tracking different platform configurations is further compounded by indirect dependencies between components. For example, the software system under development might rely on a component A which in turn relies on a component B which in turn also further relies on another component C. Thus, in tracking dependencies and information with regard to a particular platform, the software system being tested is dependent upon a particular version of components A, B and C. The fact that the software system being tested has an indirect dependency upon the C component may not be obvious to developer of the software, for example, as it may be an indirect call to a library provided in an operating system. Thus, tracking software related platform options may be further complicated by these indirect dependencies.
One technique currently in use is to manually track data describing the various platforms. However, as previously described, one of the drawbacks of this technique stems from the tediousness of tracking even the slightest change with a particular platform. The data gathering may be time consuming as well as error prone. Also, as previously pointed out, another drawback is that it may be difficult to identify all of the indirect dependencies, for example as the previously described software component C. Additionally, the problem may be further compounded in terms of complexity and environment in which shared components such as a shared library may be updated from one of a variety of software package installations. For example, two layered software products may use the same software library. When each of the two layered products are installed, a different version of the same library may be installed on the same computer system. It may be unclear to one using a routine in the library which version is being used. Thus, such installations using shared software components make it difficult and further compound the problem of tracking the various software components associated with a particular platform.
Thus, there is required a technique which provides for automatically tracking the various hardware and software components of a particular platform in accordance with a particular version of a software system being tested.